package top.lshaci.learning.springboot.jpaquerydsl.core;

import cn.hutool.core.util.StrUtil;

/**
 * DslException
 *
 * @author liangxu
 */
public class DslException extends RuntimeException {

    /**
     * 创建一个 DSL 异常
     *
     * @param template 异常消息
     * @param args     消息参数
     */
    public DslException(String template, Object... args) {
        super(StrUtil.format(template, args));
    }

    /**
     * 创建一个 DSL 异常
     *
     * @param template 异常消息
     * @param args     消息参数
     */
    public DslException(String template, Throwable cause, Object... args) {
        super(StrUtil.format(template, args), cause);
    }

    /**
     * 根据异常消息和参数创建一个异常对象
     *
     * @param template 异常消息
     * @param args     消息参数
     * @return DslException
     */
    public static DslException build(String template, Object... args) {
        return new DslException(template, args);
    }

    /**
     * 根据异常消息和参数创建一个异常对象
     *
     * @param template 异常消息
     * @param cause    异常原因
     * @param args     消息参数
     * @return DslException
     */
    public static DslException build(String template, Throwable cause, Object... args) {
        return new DslException(template, cause, args);
    }
}
